#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef double db;
const int MAXN=5e4+10;
const db eps=1e-8;
int n,top;
bool ans[MAXN];
struct line
{
	db a,b;
	int num;
}l[MAXN],Stack[MAXN];
bool cmp(line a,line b)
{
	return abs(a.a-b.a)<eps?a.b<b.b:a.a<b.a;
}
db point(line a,line b)
{
	return (b.b-a.b)/(a.a-b.a);
}
void work(line a)
{
	while(top)
	{
		if(abs(a.a-Stack[top].a)<eps)--top;
		else if(top>1&&point(a,Stack[top-1])<=point(Stack[top],Stack[top-1]))--top;
		else break;
	}
	Stack[++top]=a;
	return;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	{
		scanf("%lf%lf",&l[i].a,&l[i].b);
		l[i].num=i;
	}
	sort(l+1,l+1+n,cmp);
	for(int i=1;i<=n;++i)work(l[i]);
	for(int i=1;i<=top;++i)ans[Stack[i].num]=true;
	for(int i=1;i<=n;++i)if(ans[i])printf("%d ",i);
	puts("");
	return 0;
}
